﻿// -----------------------------------------------------------------------
// <copyright file="PushRequestDetail.cs" company="Zen Design Corp">
// TODO: Update copyright text.
// </copyright>
// -----------------------------------------------------------------------

namespace Zen.BlackBerry.Push.Request
{
	using System;
	using Zen.BlackBerry.Pap;
	using Zen.BlackBerry.Common;
	using Zen.BlackBerry.Subscription;

	/// <summary>
	/// Represents a push request detail object.
	/// </summary>
	/// <remarks>
	/// A push request detail object models the attributes that define a
	/// specific address of a push message. For a given push message, one push
	/// request detail object is created for each address in the original push
	/// request.
	/// </remarks>
	public class PushRequestDetail
	{
		/// <summary>
		/// Gets or sets the address.
		/// </summary>
		/// <value>The address.</value>
		public string Address
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the completed date.
		/// </summary>
		/// <value>The completed date.</value>
		public DateTime? CompletedDate
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the created date.
		/// </summary>
		/// <value>The created date.</value>
		public DateTime CreatedDate
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the id.
		/// </summary>
		/// <value>The id.</value>
		public string Id
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the state of the message.
		/// </summary>
		/// <value>The state of the message.</value>
		public MessageState MessageState
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the modified date.
		/// </summary>
		/// <value>The modified date.</value>
		public DateTime ModifiedDate
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the sender address.
		/// </summary>
		/// <value>The sender address.</value>
		public string SenderAddress
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the name of the sender.
		/// </summary>
		/// <value>The name of the sender.</value>
		public string SenderName
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the status code.
		/// </summary>
		/// <value>The status code.</value>
		public StatusCode StatusCode
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the status description.
		/// </summary>
		/// <value>The status description.</value>
		public string StatusDescription
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the subscriber id.
		/// </summary>
		/// <value>The subscriber id.</value>
		public string SubscriberId
		{
			get;
			set;
		}

		/// <summary>
		/// Gets or sets the type of the subscriber.
		/// </summary>
		/// <value>The type of the subscriber.</value>
		public SubscriberType SubscriberType
		{
			get;
			set;
		}
	}
}
